-- @Author: 作者QQ201878826
-- @Date:   2022-09-06 16:40:11
-- @Last Modified by:   作者QQ381990860
-- @Last Modified time: 2023-06-18 00:45:42
-- @Author: 作者QQ381990860
-- @Date:   2022-05-07 14:23:06
-- @Last Modified by:   作者QQ201878826
-- @Last Modified time: 2022-09-05 14:28:11

__gge.safecall = function (func,...)
    local args = { ... };
    local ret = {xpcall(function() return func(unpack(args)) end, __gge.traceback)}
    if ret[1] and ret[2] then
        return unpack(ret, 2)
    end
    return false
end
错误日志 = ""
错误数目 = 0
__S服务 = require("ggeserver")()
DebugMode =__gge.isdebug or false
require("lfs")
ServerDirectory= DebugMode and string.match(lfs.currentdir(), "^(.*)\\") ..[[\服务端\]] or lfs.currentdir()..[[\]]
math.randomseed(os.clock()*1000)
cjson = require("cjson")
__S服务:置工作线程数量(500)
__S服务:置预投递数量(500)
__N连接数 = 0
__C客户信息 = {}
玩家数据 = {}
运行测试时间 =0
当前时间=os.time()
保存时间=os.date("%H",当前时间).."时"..os.date("%M",当前时间).."分"..os.date("%S",当前时间).."秒 "
f函数 = require("ffi函数")
ffi = require("ffi")
查看数据={}
操作账号 = ""
随机序列=0
ServerConfig = {
    时间 = os.time(),
    版本 = f函数.读配置(ServerDirectory .. "config.ini", "mainconfig", "ver") + 0,
    角色id = f函数.读配置(ServerDirectory .. "config.ini", "mainconfig", "id") + 0,
    限制等级 = f函数.读配置(ServerDirectory .. "config.ini", "mainconfig", "lv") + 0,
    key=f函数.读配置(ServerDirectory .. "config.ini", "mainconfig", "key"),
    lj=f函数.读配置(ServerDirectory .. "config.ini", "mainconfig", "lj")+0,
    银子获得率 = 1,
    经验获得率 = 2,
    假人时间= os.time()
}
保存参数 = {起始 = os.time(), 间隔 = 10}--保存间隔5分钟
ServerConfig.启动时间 = os.time()
ServerConfig.分钟 = os.date("%M", os.time())
ServerConfig.小时 = os.date("%H", os.time())

function 发送游戏公告(公告内容)
    __S服务:发送(连接id, 99997,1, 公告内容)
end

网络处理类 = require("Script/系统处理类/网络处理类")()
队伍处理类 = require("Script/队伍处理类")()
聊天处理类 = require("Script/聊天处理类")()
角色处理类 = require("Script/Role/角色处理类")()
道具处理类 = require("Script/数据中心/道具处理类")()
装备处理类 = require("Script/装备处理类/装备处理类")()
摆摊处理类 = require("Script/摆摊处理类")()
任务控制类 = require("Script/任务处理类/任务控制类")()
管理工具类 = require("Script/系统处理类/管理工具类")()
对话内容 = require("Script/对话处理类/对话内容")()
对话处理 = require("Script/对话处理类/对话处理")()
战斗准备类 = require("Script/战斗处理类/战斗准备类")()
商会处理类 = require("Script/商会处理类")()
游戏活动类 = require("Script/游戏活动/游戏活动类")()
帮派竞赛 = require("Script/游戏活动/帮派竞赛类")()
烧烤派对 = require("Script/游戏活动/烧烤派对")()
地图处理类 = require("Script/地图处理类")()
zz = require("Script/zhuzhan/zz")()
藏宝阁处理类 = require("Script/藏宝阁处理类")()
代代内挂=require("Script/代代内挂")()
心跳间隔 = os.time()
bb数据列表 = {}
商会关闭 = false
比武大会数据 = {}
MoneyLog = {}
协程列表 = {}
任务数据 = {}
铃铛记录 = {}
藏宝阁记录=""
退出间隔 = {}
观察藏宝阁数据 = {}
require("Script/怪物类/怪物信息")
require("Script/chongzhi/neichong")
do
  __gge.print(false,7,"-------------------------------------------------------------------------\n")
  CardData=ReadExcel("变身卡数据",ServerConfig.key)
  MapData=ReadExcel("地图数据",ServerConfig.key)
  TransferData=ReadExcel("传送圈数据",ServerConfig.key)
  LabelData=ReadExcel("称谓数据",ServerConfig.key)
  RefreshMonsterData=ReadExcel("刷新怪数据",ServerConfig.key)
  RefreshMonsterTime={}
  for k,v in pairs(RefreshMonsterData) do
       RefreshMonsterTime[k] ={v.刷新时间,v.日期}
  end
    ModelData=ReadExcel("模型数据",ServerConfig.key)
    SkillData=ReadExcel("技能数据",ServerConfig.key)
    ItemData=ReadExcel("物品数据",ServerConfig.key)
    NpcData=ReadExcel("NPC数据",ServerConfig.key)
    QuretionBank =ReadExcel("题库数据",ServerConfig.key)
    BBData=ReadExcel("召唤兽数据",ServerConfig.key)
    ShopData =ReadExcel("商城数据",ServerConfig.key)
    MonsterData=ReadExcel("怪物数据",ServerConfig.key)
    PropertyData=ReadExcel("灵饰特性数据",ServerConfig.key)
    LinkTask =ReadExcel("环任务数据",ServerConfig.key)
    WeaponModel=ReadExcel("光武拓印",ServerConfig.key)
    Reward =ReadExcel("首服奖励",ServerConfig.key)
    zlxt=ReadExcel("战令系统",ServerConfig.key)
    ldjl=ReadExcel("铃铛奖励数据",ServerConfig.key)
    召唤兽吞噬库 =ReadExcel("召唤兽吞噬计算",ServerConfig.key)
    cjxt=ReadExcel("成就系统",ServerConfig.key)
    cjxt1 = {}
    for n = 1,#cjxt do
    if cjxt1[cjxt[n].参数] == nil then
    cjxt1[cjxt[n].参数] = {}
    cjxt1[cjxt[n].参数] = {[1]=cjxt[n].次数}
    else
    cjxt1[cjxt[n].参数][#cjxt1[cjxt[n].参数]+1]=cjxt[n].次数
    end
    end
     wpcs = {}
           for k,v in pairs(ItemData) do
          if ItemData[k].出售 ~= nil then
          wpcs[#wpcs+1] = {名称=k,价格=v.出售}
          end
          end
    Config=ReadExcel("Config",ServerConfig.key)[f函数.读配置(ServerDirectory .. "config.ini", "mainconfig", "ft")+0]
    LinkTaskDialogue={}
    LinkTaskClear={}
    LinkTaskEvent1={}
    LinkTaskEvent2={}
    LinkTaskEvent3={}
    for k,v in pairs(LinkTask) do
        LinkTaskDialogue[v.事件]=k
        LinkTaskClear["取消"..k]=k
        LinkTaskEvent1["给予道具("..k..")"]=k
        LinkTaskEvent2["打听消息("..k..")"]=k
        LinkTaskEvent3["开始挑战("..k..")"]=k
    end
    require("Script/系统处理类/易语言")

    古玩数据 ={}
    merchandise={银子={},守护九宠={},头像={},彩饰={},杂货={},符石={},仙玉={},锦衣={},光环={},脚印={},祥瑞={},传音={},战锦={},翅膀={},法宝={},孩子={},召唤兽={},活动积分={},知了积分={},天罡积分={},单人积分={},成就积分={},特殊积分={},活跃度={},比武积分={},副本积分={},地煞积分={},定制={},点卡={},剑侠客={},逍遥生={},飞燕女={},英女侠={},巫蛮儿={},偃无师={},虎头怪={},巨魔王={},骨精灵={},狐美人={},鬼潇潇={},杀破狼={},龙太子={},神天兵={},玄彩娥={},舞天姬={},桃夭夭={},羽灵神={}}
   for key,value in  pairs(ShopData) do
      for k,v in  pairs(merchandise) do
          if value.分类 == k then
            table.insert(merchandise[k],key)
            break;
          end
      end
      if   value.分类 == "剑侠客" or value.分类 == "逍遥生" or value.分类 == "飞燕女" or value.分类 == "英女侠" or value.分类 == "巫蛮儿" or value.分类 == "偃无师" or value.分类 == "虎头怪" or value.分类 == "巨魔王" or value.分类 == "骨精灵" or value.分类 == "狐美人" or value.分类 == "鬼潇潇" or value.分类 == "杀破狼" or value.分类 == "龙太子" or value.分类 == "神天兵" or value.分类 == "玄彩娥" or value.分类 == "舞天姬" or value.分类 == "桃夭夭" or value.分类 == "羽灵神"then
        ShopData[key].锦衣=value.名称
        ShopData[key].造型=value.技能
        ShopData[key].技能=nil
        ShopData[key].名称="GM定制礼包"
        ShopData[key].类型="定制锦衣"
      elseif value.分类 == "召唤兽" then
        ShopData[key] = AddPet(value.名称,value.技能,value.价格)
      else
        ShopData[key] =AddItem(value.名称,value.等级,value.技能,nil,value.价格,nil,value.图标,nil,value.限时)
      end
        ShopData[key].分类 = value.分类
   end

   local tempLottery=ReadExcel("抽奖数据",ServerConfig.key)
   Lottery={普通抽奖={},中等抽奖={},极品抽奖={}}
   for key,value in  pairs(tempLottery) do

      for k,v in  pairs(Lottery) do
          if value.分类 == k then
            table.insert(Lottery[k],value)
            break;
          end
      end

   end

  商店处理类 = require("Script/商店处理类")()
end
连接id = 0
每日vip次数={}
每日vip={}
--会员功能 = table.loadstring( ReadFile("数据信息/" .. "会员功能.txt"))
临时任务 = table.loadstring( ReadFile("数据信息/" .. "任务数据.txt"))
商会数据 = table.loadstring( ReadFile("数据信息/" .. "商会数据.txt"))
首服奖励 = table.loadstring( ReadFile("数据信息/" .. "首服奖励.txt"))
物品店数据 = table.loadstring( ReadFile("数据信息/" .. "物品店数据.txt"))
唤兽店数据 = table.loadstring( ReadFile("数据信息/" .. "唤兽店数据.txt"))
首席资源数据 = table.loadstring( ReadFile("数据信息/" .. "首席数据.txt"))
活动数据 = table.loadstring( ReadFile("数据信息/" .. "活动数据.txt"))
签到数据 = table.loadstring( ReadFile("数据信息/" .. "签到数据.txt"))
宝石系统 =table.loadstring( ReadFile("数据信息/" .. "宝石系统.txt"))
宝石仓库 =table.loadstring( ReadFile("数据信息/" .. "宝石仓库.txt"))
材料仓库 =table.loadstring( ReadFile("数据信息/" .. "材料仓库.txt"))
装备仓库 =table.loadstring( ReadFile("数据信息/" .. "装备仓库.txt"))
装备一仓库 =table.loadstring( ReadFile("数据信息/" .. "装备一仓库.txt"))
通天塔数据 =table.loadstring( ReadFile("数据信息/" .. "通天塔数据.txt"))
宠装仓库 =table.loadstring( ReadFile("数据信息/" .. "宠装仓库.txt"))
杂货仓库 =table.loadstring( ReadFile("数据信息/" .. "杂货仓库.txt"))
兽决仓库一 =table.loadstring( ReadFile("数据信息/" .. "兽决仓库一.txt"))
兽决仓库二 =table.loadstring( ReadFile("数据信息/" .. "兽决仓库二.txt"))
兽决仓库三 =table.loadstring( ReadFile("数据信息/" .. "兽决仓库三.txt"))
兽决仓库四 =table.loadstring( ReadFile("数据信息/" .. "兽决仓库四.txt"))
兽决仓库五 =table.loadstring( ReadFile("数据信息/" .. "兽决仓库五.txt"))
兽决仓库六 =table.loadstring( ReadFile("数据信息/" .. "兽决仓库六.txt"))
活动次数数据 =table.loadstring( ReadFile("数据信息/" .. "活动次数数据.txt"))
活动进度 =table.loadstring( ReadFile("数据信息/" .. "活动进度.txt"))
充值点数据 =table.loadstring( ReadFile("数据信息/" .. "充值点数据.txt"))
捐献幸运数据 =table.loadstring( ReadFile("数据信息/" .. "捐献幸运数据.txt"))
捐献系统 =table.loadstring( ReadFile("数据信息/" .. "捐献系统.txt"))
至尊卡= table.loadstring(ReadFile("数据信息/" .. "至尊卡.txt"))
--每日vip=table.loadstring(ReadFile("数据信息/" .. "每日vip.txt"))
--每日vip次数=table.loadstring(ReadFile("数据信息/" .. "每日vip次数.txt"))
消息数据 = {}
帮派数据 = table.loadstring( ReadFile("数据信息/" .. "帮派数据.txt"))
Ranking = table.loadstring( ReadFile("数据信息/" .. "排行数据.txt"))
古玩数据 = table.loadstring( ReadFile("数据信息/" .. "古玩数据.txt"))
藏宝阁数据 = table.loadstring( ReadFile("数据信息/" .. "藏宝阁数据.txt"))
寄存数据 = table.loadstring( ReadFile("数据信息/" .. "寄存数据.txt"))
捐赠排行=  table.loadstring(ReadFile("数据信息/" .. "捐赠信息.txt"))
登顶排行 = table.loadstring( ReadFile("数据信息/" .. "登顶排行.txt"))
for n = 1, #临时任务 do
    任务数据[临时任务[n].加载id] = table.loadstring(table.tostring(临时任务[n]))
end
if 活动数据.降妖伏魔 == nil then
活动数据.降妖伏魔={}
end
if 活动数据.门派闯关 == nil then
活动数据.门派闯关={}
end
--三界书院 = {答案 = "",开关 = false,结束 = 60,起始 = os.time(),间隔 = math.random(30, 90) * 60,名单 = {}}
昼夜参数=1

无间炼狱数据 = {间隔 = 60,起始 = os.time()}
游戏时辰 = {当前 = 1,刷新 = 120,起始 = os.time()}

服务器关闭 = {计时 = 60,开关 = false,起始 = os.time()}
道人数据 = {宝石 = 10,兽诀 = 10,内丹 = 10}
天罚数据表 = {}
商品存放 = {}
系统消息数据 = {}
幻域迷宫数据 = {}
摊位数据 = {}
游泳比赛数据 = {}
展示数据 = {}
交易数据 = {}
炼丹炉 = {时间=120}
炼丹查看 = {}
天梯匹配 = {}
烧烤数据={}
吆五喝六数量 = 0
门派发送信息={}
门派闯关奖励 = {高级必杀={id=0,时间=0},高级法术暴击={id=0,时间=0},高级连击={id=0,时间=0},高级强力={id=0,时间=0},高级冥思={id=0,时间=0},高级幸运={id=0,时间=0},高级招架={id=0,时间=0},高级感知={id=0,时间=0},高级再生={id=0,时间=0},高级夜战={id=0,时间=0},高级敏捷={id=0,时间=0}}
首席争霸赛进场开关 = false
首席争霸赛战斗开关 = false
幻域迷宫开关 = false
飞贼开关 = false
比武大会进场开关 = false
比武大会开始开关 = false
门派闯关开关 = false
游戏比赛开关 = true
师门守卫刷新 = math.random(3600, 7200) + os.time()
华山论剑开关 = false
烧烤派对开关 = false
结束提醒 = false
function 玩家全部下线()
    Save()
    for i=1,#玩家数据 do
        if 玩家数据[i]~=nil then
            __S服务:发送(玩家数据[i].连接id,99994,1, "77")
        end
    end
    for n, v in pairs(玩家数据) do
        if 玩家数据[n] ~= nil then
            if 玩家数据[n].战斗 ~= 0 then
                战斗准备类.战斗盒子[玩家数据[n].战斗]:强制结束战斗()
                战斗准备类.战斗盒子[玩家数据[n].战斗] = nil
            end
            if 玩家数据[n].角色 ~= nil then
                网络处理类:退出处理(n, 1)
            end
        end
    end
    os.exit()
end
function __S服务:启动成功()
    return 0
end
function __S服务:连接进入(ID, IP, PORT)
  __N连接数=0
    if IP ~= Config.ip then
    __S服务:断开连接(ID)
    return 0
    end
      __gge.print(true,7,string.format("网关连接\t\t\t-->"))
      __gge.print(false,7,"\t\t\t[")
      __gge.print(false,10,"连接成功")
      __gge.print(false,7,"]\n")
      __gge.print(false,7,"-------------------------------------------------------------------------\n")
        __C客户信息[ID] = {
            IP = IP,
            PORT = PORT
        }
   if 连接id == 0 and IP == Config.ip then
         连接id = ID
     end
end
print([[
                                   _ooOoo_
                                  o8888888o
                                  88" . "88
                                  (| -_- |)
                                  O\  =  /O
                               ____/`---'\____
                             .'  \\|     |//  `.
                            /  \\|||  :  |||//  \
                           /  _||||| -:- |||||-  \
                           |   | \\\  -  /// |   |
                           | \_|  ''\---/''  |   |
                           \  .-\__  `-`  ___/-. /
                         ___`. .'  /--.--\  `. . __
                      ."" '<  `.___\_<|>_/___.'  >'"".
                     | | :  `- \`.;`\ _ /`;.`/ - ` : | |
                     \  \ `-.   \_ __\ /__ _/   .-` /  /
                ======`-.____`-.___\_____/___.-`____.-'======
                                   `=---='
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                            佛祖保佑       永无BUG
  ]])

function __S服务:连接退出(ID)
    if __C客户信息[ID] then
      __gge.print(true,7,string.format("网关连接\t\t\t-->"))
      __gge.print(false,7,"\t\t\t[")
      __gge.print(false,12,"连接失败")
      __gge.print(false,7,"]\n")
      __gge.print(false,7,"-------------------------------------------------------------------------\n")
        if Config.ip == __C客户信息[ID].IP then
            连接id = 0
        end
    end
end

function __S服务:数据到达(ID, ...)
    运行测试时间 = os.clock()
    local arg = {...}
    if __C客户信息[ID] then
        网络处理类:数据处理(arg[1], arg[2], ID, __C客户信息[ID].IP)
    end
end
function SendMessage(ID, Number, Msg)
      if Msg == nil or ID == nil then
        if  __gge.isdebug  then
             print("错误的数据源" .. Number,Msg,ID)
        end
         return
      end
      if type(Msg)=="table" then
         Msg =table.tostring(Msg)
      elseif type(Msg)=="number" then
         Msg =tostring(Msg)
      end
      __S服务:发送(连接id,Number,ID+0,Msg)
 end
function 发送数据(ID, Number, Msg)
      if Msg == nil or ID == nil then
        if  __gge.isdebug  then
             print("错误的数据源" .. Number,Msg,ID)
        end
         return
      end
      if type(Msg)=="table" then
         Msg = table.tostring(Msg)
      elseif type(Msg)=="number" then
         Msg = tostring(Msg)
      end
      __S服务:发送(连接id,Number,ID+0,Msg)
end

function 清理任务信息()

     for n, v in pairs(任务数据) do
        if  任务数据[n].类型 == "天罡" or 任务数据[n].类型 == "宝箱" or 任务数据[n].类型 == "地煞" or 任务数据[n].类型 == "天罡星69" or 任务数据[n].类型 == "天罡星2"
                        or 任务数据[n].类型 == "天罡星3" or 任务数据[n].类型 == "天罡星4" or 任务数据[n].类型 == "天罡星5" or 任务数据[n].类型 == "天罡星6"
                        or 任务数据[n].类型 == "0级BOSS新" or 任务数据[n].类型 == "10级BOSS新" or 任务数据[n].类型 == "20级BOSS新" or 任务数据[n].类型 == "30级BOSS新"
                          or 任务数据[n].类型 == "40级BOSS新" or 任务数据[n].类型 == "50级BOSS新" or 任务数据[n].类型 == "60级BOSS新" or 任务数据[n].类型 == "70级BOSS新"
                           or 任务数据[n].类型 == "80级BOSS新" or 任务数据[n].类型 == "90级BOSS新" or 任务数据[n].类型 == "100级BOSS新" or 任务数据[n].类型 == "110级BOSS新"
                            or 任务数据[n].类型 == "120级BOSS新" or 任务数据[n].类型 == "130级BOSS新" or 任务数据[n].类型 == "140级BOSS新" or 任务数据[n].类型 == "150级BOSS新"
                             or 任务数据[n].类型 == "160级BOSS新" or 任务数据[n].类型 == "170级BOSS新" or 任务数据[n].类型 == "0级终极BOSS新" or 任务数据[n].类型 == "10级终极BOSS新"
                             or 任务数据[n].类型 == "20级终极BOSS新" or 任务数据[n].类型 == "30级终极BOSS新"or 任务数据[n].类型 == "泡泡"or 任务数据[n].类型 == "妖魔"or 任务数据[n].类型 == "知了先锋"
                             or 任务数据[n].类型 == "知了小王"  or 任务数据[n].类型 == "知了大王" or 任务数据[n].类型 == "知了统领" or 任务数据[n].类型 == "千年知了王"or 任务数据[n].类型 == "精灵王"
                             or 任务数据[n].类型 == "孩子王" or 任务数据[n].类型 == "星宿" or 任务数据[n].类型 == "12生肖" or 任务数据[n].类型 == "邪恶年兽"
                          or 任务数据[n].类型 == "40级终极BOSS新" or 任务数据[n].类型 == "50级终极BOSS新" or 任务数据[n].类型 == "60级终极BOSS新" or 任务数据[n].类型 == "70级终极BOSS新"
                           or 任务数据[n].类型 == "80级终极BOSS新" or 任务数据[n].类型 == "90级终极BOSS新" or 任务数据[n].类型 == "100级终极BOSS新" or 任务数据[n].类型 == "110级终极BOSS新"
                            or 任务数据[n].类型 == "120级终极BOSS新" or 任务数据[n].类型 == "130级终极BOSS新" or 任务数据[n].类型 == "140级终极BOSS新" or 任务数据[n].类型 == "150级终极BOSS新"
                             or 任务数据[n].类型 == "160级终极BOSS新" or 任务数据[n].类型 == "170级终极BOSS新" or 任务数据[n].类型 == "180级终极BOSS新" or 任务数据[n].类型 == "190级终极BOSS新"
                              or 任务数据[n].类型 == "200级终极BOSS新" or 任务数据[n].类型 == "魔尊新" or 任务数据[n].类型 == "人皇新" or 任务数据[n].类型 == "地王新" or 任务数据[n].类型 == "吆五喝六"
            and  任务数据[n].类型 ~= "秘红罗羹制" and 任务数据[n].类型 ~= "坐骑" and 任务数据[n].类型 ~= "任务链" and 任务数据[n].类型 ~= "打造" and 任务数据[n].类型 ~= "神器任务" then

           地图处理类:移除单位(任务数据[n].地图编号, n)
           任务数据[n] = nil
 end
     end
end

function Save()
    local PCU = 0
    for n, v in pairs(玩家数据) do
        if v and not v.假人  then
            角色处理类:存档(v)
            PCU = PCU + 1
        end
    end
    __S服务:输出("-------------当前共有" .. PCU .. "个玩家在线-------------")
    __S服务:输出("用户数据保存成功……")
    临时任务 = {}
    for n, v in pairs(任务数据) do
        if 任务数据[n] ~= nil then
            if v.造型 then
                --任务数据[n] = nil
            else
                临时任务[#临时任务 + 1] = table.loadstring(table.tostring(任务数据[n]))
                临时任务[#临时任务].加载id = n
            end
        end
    end
    WriteFile("数据信息/" .. "通天塔数据.txt", table.tostring(通天塔数据))
    __S服务:输出("通天塔数据保存成功……")
    WriteFile("数据信息/" .. "登顶排行.txt", table.tostring(登顶排行))
     __S服务:输出("登顶排行保存成功……")
    WriteFile("数据信息/" .. "排行数据.txt", table.tostring(Ranking))
     __S服务:输出("排行数据保存成功……")
    WriteFile("数据信息/" .. "捐赠信息.txt", table.tostring(捐赠排行))
     __S服务:输出("捐赠信息保存成功……")
    WriteFile("数据信息/" .. "商会数据.txt", table.tostring(商会数据))
    __S服务:输出("商会数据保存成功……")
      WriteFile("数据信息/" .. "首服奖励.txt", table.tostring(首服奖励))
    __S服务:输出("首服奖励保存成功……")
    WriteFile("数据信息/" .. "物品店数据.txt", table.tostring(物品店数据))
    __S服务:输出("物品店数据保存成功……")
    WriteFile("数据信息/" .. "唤兽店数据.txt", table.tostring(唤兽店数据))
    __S服务:输出("唤兽店数据保存成功……")
    WriteFile("数据信息/" .. "首席数据.txt", table.tostring(首席资源数据))
    __S服务:输出("首席数据保存成功……")
    WriteFile("数据信息/" .. "任务数据.txt", table.tostring(临时任务))
    __S服务:输出("任务数据保存成功……")
    WriteFile("数据信息/" .. "活动数据.txt", table.tostring(活动数据))
    __S服务:输出("活动数据保存成功……")
    WriteFile("数据信息/" .. "签到数据.txt", table.tostring(签到数据))
    __S服务:输出("签到数据保存成功……")
    WriteFile("数据信息/" .. "帮派数据.txt", table.tostring(帮派数据))
    __S服务:输出("帮派数据保存成功……")
        WriteFile("数据信息/" .. "古玩数据.txt", table.tostring(古玩数据))
    __S服务:输出("古玩数据保存成功……")
    WriteFile("数据信息/" .. "宝石仓库.txt", table.tostring(宝石仓库))
    __S服务:输出("宝石仓库保存成功……")
    WriteFile("数据信息/" .. "材料仓库.txt", table.tostring(材料仓库))
    __S服务:输出("材料仓库保存成功……")
    WriteFile("数据信息/" .. "装备仓库.txt", table.tostring(装备仓库))
    __S服务:输出("装备仓库保存成功……")
    WriteFile("数据信息/" .. "装备一仓库.txt", table.tostring(装备一仓库))
    __S服务:输出("装备一仓库保存成功……")
    WriteFile("数据信息/" .. "宠装仓库.txt", table.tostring(宠装仓库))
    __S服务:输出("宠装仓库保存成功……")
    WriteFile("数据信息/" .. "杂货仓库.txt", table.tostring(杂货仓库))
    __S服务:输出("杂货仓库保存成功……")
    WriteFile("数据信息/" .. "宝石系统.txt", table.tostring(宝石系统))
    __S服务:输出("宝石系统保存成功……")
     WriteFile("数据信息/" .. "兽决仓库一.txt", table.tostring(兽决仓库一))
    __S服务:输出("兽决仓库一保存成功……")
    WriteFile("数据信息/" .. "兽决仓库二.txt", table.tostring(兽决仓库二))
    __S服务:输出("兽决仓库二保存成功……")
    WriteFile("数据信息/" .. "兽决仓库三.txt", table.tostring(兽决仓库三))
    __S服务:输出("兽决仓库三保存成功……")
    WriteFile("数据信息/" .. "兽决仓库四.txt", table.tostring(兽决仓库四))
    __S服务:输出("兽决仓库四保存成功……")
    WriteFile("数据信息/" .. "兽决仓库五.txt", table.tostring(兽决仓库五))
    __S服务:输出("兽决仓库五保存成功……")
    WriteFile("数据信息/" .. "兽决仓库六.txt", table.tostring(兽决仓库六))
    __S服务:输出("兽决仓库六保存成功……")
    WriteFile("数据信息/" .. "活动次数数据.txt", table.tostring(活动次数数据))
    __S服务:输出("活动次数数据保存成功……")
    WriteFile("数据信息/" .. "活动进度.txt", table.tostring(活动进度))
    __S服务:输出("活动进度保存成功……")
     WriteFile("数据信息/" .. "充值点数据.txt", table.tostring(充值点数据))
    __S服务:输出("充值点数据保存成功……")
    WriteFile("数据信息/" .. "捐献幸运数据.txt", table.tostring(捐献幸运数据))
    __S服务:输出("捐献幸运数据保存成功……")
    WriteFile("数据信息/" .. "捐献系统.txt", table.tostring(捐献系统))
    __S服务:输出("捐献系统保存成功……")
    WriteFile("数据信息/" .. "至尊卡.txt", table.tostring(至尊卡))
    __S服务:输出("至尊卡保存成功……")
   WriteFile("数据信息/" .. "藏宝阁数据.txt", table.tostring(藏宝阁数据))
   __S服务:输出("藏宝阁数据保存成功……")
       WriteFile("数据信息/" .. "寄存数据.txt", table.tostring(寄存数据))
   __S服务:输出("寄存数据保存成功……")
    --WriteFile("数据信息/" .. "每日vip次数.txt",table.tostring(每日vip次数))
     --__S服务:输出("每日vip次数数据保存成功……")
  --  WriteFile("数据信息/" .. "每日vip.txt",table.tostring(每日vip))
   --  __S服务:输出("每日vip数据保存成功……")
   -- WriteFile("数据信息/" .. "会员功能.txt", table.tostring(会员功能))
    --__S服务:输出("会员功能保存成功……")
    当前时间 = os.time()
    保存时间 = os.date("%H", 当前时间) .. "时" .. os.date("%M", 当前时间) .. "分" .. os.date("%S", 当前时间) .. "秒 "
    __S服务:输出("错误数量 "..错误数目)
   if not file_exists([[log\]]..os.date("%Y-%m-%d")) then
       os.execute("mkdir "..ServerDirectory..[[log\]]..os.date("%Y-%m-%d"))
   end

    WriteFile(os.date("log/%Y-%m-%d/"..os.time()..".txt"),错误日志)
    错误日志 = ""
    错误数目 = 0
    临时任务 = {}
    __S服务:输出("错误日志已经记录……")
end

function MinuteFunc(time)
    ServerConfig.分钟 = time
    for k,v in pairs(RefreshMonsterTime) do
        if v[2] =="全天" or  v[2] ==os.date("%w") then
           for s,times in ipairs(v[1]) do
                if  times == tonumber(time)  then
                  任务控制类:加载怪物(RefreshMonsterData[k],k)
                  break
                end
           end
        end
    end
        if 华山论剑开关 then
        游戏活动类:天梯匹配处理()
         __S服务:输出("华山论剑匹配刷新")
     end
    -- if ServerConfig.小时 + 0 >= 12 and ServerConfig.小时 + 0 <= 17 and 三界书院.间隔 <= os.time() - 三界书院.起始 then
    --     三界书院.起始 = os.time()
    --     任务控制类:开启三界书院()
    -- end
    if 烧烤派对开关 then
     烧烤派对:刷新烧烤提示()
  end
   if time == "01" then
      任务控制类:刷出0级BOSS()
      任务控制类:刷出10级BOSS()
      任务控制类:刷出20级BOSS()
      任务控制类:刷出30级BOSS()
      任务控制类:刷出40级BOSS()
      任务控制类:刷出50级BOSS()
      任务控制类:刷出60级BOSS()
      任务控制类:刷出70级BOSS()
      任务控制类:刷出80级BOSS()
      任务控制类:刷出90级BOSS()
      任务控制类:刷出100级BOSS()
      任务控制类:刷出110级BOSS()
      任务控制类:刷出120级BOSS()
      任务控制类:刷出130级BOSS()
      任务控制类:刷出140级BOSS()
      任务控制类:刷出150级BOSS()
      任务控制类:刷出160级BOSS()
      任务控制类:刷出170级BOSS()
      任务控制类:刷出0级终极BOSS()
      任务控制类:刷出10级终极BOSS()
      任务控制类:刷出20级终极BOSS()
      任务控制类:刷出30级终极BOSS()
      任务控制类:刷出40级终极BOSS()
      任务控制类:刷出50级终极BOSS()
      任务控制类:刷出60级终极BOSS()
      任务控制类:刷出70级终极BOSS()
      任务控制类:刷出80级终极BOSS()
      任务控制类:刷出90级终极BOSS()
      任务控制类:刷出100级终极BOSS()
      任务控制类:刷出110级终极BOSS()
      任务控制类:刷出120级终极BOSS()
      任务控制类:刷出130级终极BOSS()
      任务控制类:刷出140级终极BOSS()
      任务控制类:刷出150级终极BOSS()
      任务控制类:刷出160级终极BOSS()
      任务控制类:刷出170级终极BOSS()

      end
  if time == "01" then
      if ServerConfig.小时 == "21" then
         游戏活动类:刷新门派闯关排行()
        发送游戏公告("门派闯关排行已刷新，请前往门派闯关使查看")
     end



     if os.date("%w") =="0" then
        if ServerConfig.小时 == "22" then
          任务控制类:刷出帮战宝箱()
          发送游戏公告("宝箱已经散落到帮战奖励地图中，10分钟后将关闭，请获胜帮派取地图中捡取宝箱")
          广播消息("#xt/#y/宝箱已经散落到帮战奖励地图中，10分钟后将关闭，请获胜帮派取地图中捡取宝箱")
        end
      end
    elseif time == "15" then
      if os.date("%w") =="0" then
        if ServerConfig.小时 == "22" then
          帮派竞赛.宝箱开关=false
           地图处理类:传送地图玩家(1380)
        end
      end
      任务控制类:刷新地妖星(id)
      if ServerConfig.小时 == "20" then
           if 门派闯关开关 then
             游戏活动类:刷新门派闯关排行1()
           end
        end
    elseif time == "30" then
      任务控制类:刷新天罡星()
      任务控制类:刷出180级终极BOSS()
      任务控制类:刷出190级终极BOSS()
      任务控制类:刷出200级终极BOSS()
      任务控制类:刷出魔尊()
      任务控制类:刷出人皇()
      任务控制类:刷出地王()
     if os.date("%w") =="0" then
        if ServerConfig.小时 == "19" then
          帮派竞赛.开关=true
          任务控制类:刷出帮战怪物()
          发送游戏公告("帮派竞赛开始，请各位帮战人员开战吧")
          广播消息("帮派竞赛开始，请各位帮战人员开战吧")
       end
        if ServerConfig.小时 == "20" then
            帮派竞赛:结束竞赛()
        end
      end
       elseif time == "36" then

       if ServerConfig.小时 == "19" then

         全服BOSS开关 = true
         吆五喝六数量 = 0
          世界BOSS数据={}
          全服BOSS排行={}
          世界BOSS气血=f函数.读配置(ServerDirectory.."config.ini","mainconfig","bosshp")+0

         广播消息("#xt/#y/吆五喝六已经开放，各位玩家可前往北俱芦洲吆五喝六BOSS参加活动")
         发送网关消息("吆五喝六开启")
           任务控制类:刷出吆五喝六()

       end
    elseif time == "40" then
       任务控制类:刷出天罡星69()
      任务控制类:刷出天罡星2()
      任务控制类:刷出天罡星3()
      任务控制类:刷出天罡星4()
      任务控制类:刷出天罡星5()
      任务控制类:刷出天罡星6()

      任务控制类:刷出0级BOSS()
      任务控制类:刷出10级BOSS()
      任务控制类:刷出20级BOSS()
      任务控制类:刷出30级BOSS()
      任务控制类:刷出40级BOSS()
      任务控制类:刷出50级BOSS()
      任务控制类:刷出60级BOSS()
      任务控制类:刷出70级BOSS()
      任务控制类:刷出80级BOSS()
      任务控制类:刷出90级BOSS()
      任务控制类:刷出100级BOSS()
      任务控制类:刷出110级BOSS()
      任务控制类:刷出120级BOSS()
      任务控制类:刷出130级BOSS()
      任务控制类:刷出140级BOSS()
      任务控制类:刷出150级BOSS()
      任务控制类:刷出160级BOSS()
      任务控制类:刷出170级BOSS()
      任务控制类:刷出0级终极BOSS()
      任务控制类:刷出10级终极BOSS()
      任务控制类:刷出20级终极BOSS()
      任务控制类:刷出30级终极BOSS()
      任务控制类:刷出40级终极BOSS()
      任务控制类:刷出50级终极BOSS()
      任务控制类:刷出60级终极BOSS()
      任务控制类:刷出70级终极BOSS()
      任务控制类:刷出80级终极BOSS()
      任务控制类:刷出90级终极BOSS()
      任务控制类:刷出100级终极BOSS()
      任务控制类:刷出110级终极BOSS()
      任务控制类:刷出120级终极BOSS()
      任务控制类:刷出130级终极BOSS()
      任务控制类:刷出140级终极BOSS()
      任务控制类:刷出150级终极BOSS()
      任务控制类:刷出160级终极BOSS()
      任务控制类:刷出170级终极BOSS()
     if   os.date("%w") =="0" then
        if ServerConfig.小时 == "19" then
          -- 帮派竞赛.开关=true
          -- 任务控制类:刷出帮战怪物()
          -- 发送游戏公告("帮派竞赛开始，请各位帮战人员开战吧")
          -- 广播消息("帮派竞赛开始，请各位帮战人员开战吧")
       end
        if ServerConfig.小时 == "20" then
           -- 帮派竞赛:结束竞赛()

          if 门派闯关开关 then
              游戏活动类:刷新门派闯关排行1()
          end

        end
      else

         if ServerConfig.小时 == "20" then
           if 门派闯关开关 then
             游戏活动类:刷新门派闯关排行1()
           end
        end


      end

    elseif time == "40" then
         if ServerConfig.小时 == "19" and   os.date("%w") ~="0"  then
            比武大会进场开关 = true
            发送游戏公告("比武大会活动即将开启，各位玩家现在可以通过长安城兰虎进入比武场。20分钟后将无法进入比武场。请参加活动的玩家提前进入比武场。")
        end
        elseif time == "50" then
        if ServerConfig.小时 == "20" then
           if 门派闯关开关 then
             游戏活动类:刷新门派闯关排行1()
           end
        end

    elseif time == "50" then
        if ServerConfig.小时 == "18" and   os.date("%w") ~="0" then
            广播消息("#xt/#r/ 首席争霸赛活动已经开启入场，10分钟后将无法进入比赛地图。请各位玩家提前找本门派首席弟子进入比赛地图。")
            首席争霸赛进场开关 = true
            首席争霸赛战斗开关 = false
        end
          elseif time == "58" then
        if ServerConfig.小时 == "19" then
          全服BOSS开关 = false
          吆五喝六数量 = 0
           广播消息("#xt/#y/吆五喝六活动已经结束。")
         发送网关消息("吆五喝六结束")
     for n, v in pairs(战斗准备类.战斗盒子) do
           if 战斗准备类.战斗盒子[n].战斗类型== 888902  then
              战斗准备类.战斗盒子[n]:强制结束战斗()
              战斗准备类.战斗盒子[n]=nil
             end
        end
    -- for n,p in  pairs (玩家数据) do
    --   if 玩家数据[n]~=nil then
    --     游戏活动类:刷新全服BOSS排行(n)
    --   end
    --  end

        end

    end
end

function 循环函数()
  战斗准备类:更新()
    任务控制类:更新()
    藏宝阁更新()
    TimeUpdate()
    if os.time() - ServerConfig.启动时间 >= 1 then
        SecondFuc()
        ServerConfig.启动时间 = os.time()
    end
  if os.time() - ServerConfig.假人时间 >= 10 then
    if 假人移动 then
         local ls= 0;
        local co = coroutine.wrap(
          function()
              for n, v in pairs(玩家数据) do
                if v.假人  and math.random(100) < 70 then
                  if not 玩家数据[n].摆摊  then
                    ls=ls+1
                      local 临时坐标= 地图处理类:Randomloadtion(玩家数据[n].地图)
                      地图处理类:玩家移动请求(玩家数据[n].id, 临时坐标.x.."*-*"..临时坐标.y)
                       if ls ==30 then
                          ls =0
                          coroutine.yield()
                      end
                  end
                end
              end
              return true
          end)
        if not co() then
            协程列表["假人移动"] = co
        end
        ServerConfig.假人时间= os.time()
    end

 end
    if os.date("%X", os.time()) == os.date("%H", os.time()) .. ":00:00" then
        HourFunc(os.date("%H", os.time()))
    elseif ServerConfig.分钟 ~= os.date("%M", os.time()) and os.date("%S", os.time()) == "00" then
        MinuteFunc(os.date("%M", os.time()))
    end
    if 竞拍信息 then
        竞拍信息.剩余时间 = os.time() -竞拍信息.起始
            if os.time() -竞拍信息.起始 >= 60 then
                if 竞拍信息.竞拍id then
                    if 玩家数据[竞拍信息.竞拍id] and  银子检查(竞拍信息.竞拍id,竞拍信息.竞拍价格)  then
                        角色处理类:扣除银子(玩家数据[竞拍信息.竞拍id],竞拍信息.竞拍价格,"物品竞拍")

                        角色处理类:添加银子(玩家数据[竞拍信息.id],竞拍信息.竞拍价格,"物品竞拍")
                        角色处理类:添加消费日志(玩家数据[竞拍信息.竞拍id],"以"..竞拍信息.竞拍价格.."价格竞拍获得"..竞拍信息.物品.名称)

                        local 临时格子 =  角色处理类:取可用道具格子(玩家数据[竞拍信息.竞拍id],"包裹")
                        local 临时道具 = 道具处理类:取道具编号(竞拍信息.竞拍id)
                        local 临时数据 = table.tostring(竞拍信息.物品)
                        玩家数据[竞拍信息.竞拍id].物品[临时道具] = table.loadstring(临时数据)
                        玩家数据[竞拍信息.竞拍id].角色.道具.包裹[临时格子] = 临时道具
                        for n, v in pairs(玩家数据) do
                            发送数据(玩家数据[n].连接id, 2032,"竞拍信息")
                            发送数据(玩家数据[n].连接id,9,"#pm/#y/竞拍结束恭喜玩家#g/"..竞拍信息.竞拍名称.."#y/以#r/"..竞拍信息.竞拍价格.."#y的价格竞拍到了#g"..竞拍信息.物品.名称)
                        end

                    end
                 else
                    if 玩家数据[竞拍信息.id] then
                        --角色处理类:添加系统消息(玩家数据[竞拍信息.id],  添加银子(竞拍信息.价格,"物品竞拍")
                        角色处理类:添加消费日志(玩家数据[竞拍信息.id],"以"..竞拍信息.价格.."价格竞拍取回"..竞拍信息.物品.名称)
                        local 临时格子 = 角色处理类:取可用道具格子(玩家数据[竞拍信息.id],"包裹")
                        local 临时道具 = 道具处理类:取道具编号(竞拍信息.id)
                        local 临时数据 = table.tostring(竞拍信息.物品)
                        玩家数据[竞拍信息.id].物品[临时道具] = table.loadstring(临时数据)
                        玩家数据[竞拍信息.id].角色.道具.包裹[临时格子] = 临时道具
                        for n, v in pairs(玩家数据) do
                            发送数据(玩家数据[n].连接id, 2032,"竞拍信息")
                            发送数据(玩家数据[n].连接id,9,"#pm/#y/竞拍结束玩家#g/"..竞拍信息.名称.."#y/竞拍价#r/"..竞拍信息.价格.."#y的#g"..竞拍信息.物品.名称.."无人竞拍物品已经归还")
                        end
                    end
                 end
                 竞拍信息=nil
            end
    end
end

tchs=os.exit

function HourFunc(time)
  if ServerConfig.小时 == time then
      return 0
  else
      ServerConfig.小时 = time
  end
  任务控制类:帮派扣费()
  if 取道人时间() then
      道人数据 = {宝石 = 10,兽诀 = 10,内丹 = 10}
      广播消息(9, "#xt/#r/宝象国神秘商人所出售的商品刷新了")
  end
  if time=="00" then
   任务控制类:结束门派闯关活动()
   任务控制类:开启门派闯关活动()

    for n,v in pairs(至尊卡) do
    至尊卡[n] = {开通=v.开通,次数=v.次数,时间=v.时间,累计=v.累计}
    end
    end
  if time=="12" then
    MoneyLog={}
      if tonumber(os.date("%d")) ==1 then
        签到数据 ={}
        轮回数据 ={}
      end
      if tonumber(os.date("%d")) ==3 then
        轮回数据 ={}
      end
      if tonumber(os.date("%d")) ==5 then
        捐献系统 ={}
        f函数.写配置(ServerDirectory .. "config.ini", "mainconfig", "lj", 0)
        轮回数据 ={}
      end
       local a= 网络处理类:获取登顶榜首()
     if a~=0 then
       if  玩家数据[a] ~= nil then
        角色处理类:添加仙玉(玩家数据[a],3000,"登顶奖励")
        角色处理类:添加系统消息(玩家数据[a], "#h/恭喜你获得了本日的登顶奖励,3000仙玉已经发放到你的账户")
       end
     end
     活动数据={大雁塔数据={},科举名单={},降妖伏魔={},锦衣碎片={},强化珠={},嘉年华数据={},活跃度={},宝藏山名单={},平定安邦={},师门名单={},无限轮回={},群雄逐鹿={},蚩尤挑战={},抓鬼={},除暴安良={},押镖={},官职={},鬼王={},乌鸡={},车迟={},双倍={},每日答题={},打图={},自动次数={},捐献次数={},月卡次数={},闯关星级={},本日镇魔={},灵狐次数={},天赐次数={},本日副本={},本日边境={},本日祈福={}}
    for n=1,100 do
       活动数据.大雁塔数据[n]={}
     end
    通天塔数据 ={}
   游泳比赛数据 = {}
   活动次数数据 = {}
   活动进度 = {}
   天罚数据表={}
   登顶排行={排行={}}

   师门守卫刷新=math.random(3600,7200)+os.time()
   广播消息("#xt/#y/皇宫飞贼活动已经开放，各位玩家可前往长安城御林军左统领处领取任务")
   飞贼开关=true
  elseif time=="23" then
  广播消息("#xt/#y/皇宫飞贼活动已经结束。玩家将无法领取新的任务，未完成的任务仍然可以继续完成。")
   飞贼开关=false
  elseif time=="13" then
  广播消息("#xt/#y/皇宫飞贼活动已经结束。玩家将无法领取新的任务，未完成的任务仍然可以继续完成。")
   飞贼开关=false
   local 名单内容={}
          local 名单 = {}
           for b, v in pairs(捐献系统) do
            名单[#名单+1]=v
           end
            local n = #名单
            for i = 1,n do
                local j = math.random(i,n)
                if j > i then
                    名单[i],名单[j] = 名单[j],名单[i]
                end
            end
          for i=1,5 do
             if 名单[i] ~= nil then
              名单内容[i] = 名单[i]
             end
          end
          if 名单内容[1]~=nil then
             捐献幸运数据.名称1 = 名单内容[1].名称
          end
          if 名单内容[2]~=nil then
             捐献幸运数据.名称2 = 名单内容[2].名称
          end
          if 名单内容[3]~=nil then
             捐献幸运数据.名称3 = 名单内容[3].名称
          end
          if 名单内容[4]~=nil then
             捐献幸运数据.名称4 = 名单内容[4].名称
          end
          if 名单内容[5]~=nil then
             捐献幸运数据.名称5 = 名单内容[5].名称
          end
  elseif time=="19" then
         if   os.date("%w") =="0" then
          帮派竞赛:开启竞赛()
        else
            游戏活动类:开启首席争霸赛()
        end
        烧烤派对开关 = true
      结束提醒 = false
      烧烤派对:开启烧烤派对()




  elseif time == "20" and  os.date("%w") ~="0" then
        发送游戏公告("比武大会活动已开启。各位比武场内的玩家可以通过Alt+A对对方发起攻击。")
       比武大会进场开关 = false
        比武大会开始开关 = true
        地图处理类:重置比武大会玩家()
        if 首席争霸赛战斗开关 then
            游戏活动类:结束首席争霸门派(1, 3, 0, 0)
        end

    elseif time == "21"  then
     if   os.date("%w") =="0" then
          帮派竞赛.迷宫开关=true
          帮派竞赛.准备迷宫开关=false
          发送游戏公告("帮派迷宫已经开始，请各位帮战人员开战吧")
          广播消息("帮派迷宫已经开始，请各位帮战人员开战吧")

      end
      烧烤派对开关 = true
      结束提醒 = false
      烧烤派对:开启烧烤派对()

    elseif time == "22" then
        烧烤派对开关 = true
      结束提醒 = false
      烧烤派对:开启烧烤派对()
        if   os.date("%w") =="0" then
        帮派竞赛:结束迷宫()
        end
        广播消息("#xt/#y/皇宫飞贼活动已经开放，各位玩家可前往长安城御林军左统领处领取任务")
        飞贼开关 = true
    end
end
function SecondFuc(t)
    for i,co in pairs(协程列表) do
        if co() then
            协程列表[i] = nil
        end
    end
    -- 游戏活动类:炼丹更新()
    if  竞拍信息 then
      for i=1,#竞拍信息.接受者 do
          if 玩家数据[竞拍信息.接受者[i]] then
           发送数据(玩家数据[竞拍信息.接受者[i]].连接id, 2029,竞拍信息)
          end
      end
    end
    if ServerConfig.小时 + 0 > 12 and ServerConfig.小时 + 0 < 22 and 师门守卫刷新 <= os.time() then
        师门守卫刷新 = math.random(3600, 7200) + os.time()
        任务控制类:刷出师门守卫()
    end
    if 烧烤派对开关 then
     烧烤派对:刷新烧烤提示1()

    end
    -- if 三界书院.开关 and 三界书院.结束 <= os.time() - 三界书院.起始 then
    --     三界书院.开关 = false

    --     for n = 1, #三界书院.名单 do
    --         if 玩家数据[三界书院.名单[n].id] ~= nil then
    --             角色处理类:添加银子(玩家数据[三界书院.名单[n].id],100000, 19)
    --         end
    --     end
    --     广播消息(9, "#xt/#y/正确答案：#r/" .. 三界书院.答案)
    --     if #三界书院.名单 == 0 then
    --         广播消息(9, "#xt/#y/真是遗憾，竟然无人可以回答正确。")
    --     else
    --         广播消息(9, "#xt/#y/知识就是金钱，每一位作答正确的玩家均获得10万两银子以作奖励。#g/" .. 三界书院.名单[1].名称 .. "#y/以#r/" .. 三界书院.名单[1].用时 .. "#y/秒惊人的飞速抢先作答正确，获得了额外的100万两银子、随机怪物卡片*1的奖励。")

    --         if 玩家数据[三界书院.名单[1].id] ~= nil then
    --               角色处理类:添加银子(玩家数据[三界书院.名单[1].id],1000000, 19)
    --              local 卡片 ={"蝴蝶仙子","进阶蝴蝶仙子","雷鸟人","进阶雷鸟人","地狱战神","进阶地狱战神",
    --                      "风伯","进阶风伯","天兵","进阶天兵","天将","进阶天将" ,"凤凰" ,"进阶凤凰","雨师","进阶雨师","蛟龙","进阶蛟龙","蚌精","进阶蚌精",
    --                      "进阶碧水夜叉","碧水夜叉","进阶鲛人","百足将军","进阶百足将军","锦毛貂精","进阶锦毛貂精","镜妖","进阶镜妖","泪妖","进阶泪妖","千年蛇魅",
    --                      "进阶千年蛇魅","如意仙子","进阶如意仙子","鼠先锋","进阶鼠先锋","星灵仙子","进阶星灵仙子","巡游天神","进阶巡游天神","野猪精","进阶野猪精",
    --                      "芙蓉仙子","进阶芙蓉仙子","进阶犀牛将军人形","犀牛将军人形","犀牛将军兽形","进阶犀牛将军兽形","阴阳伞","进阶阴阳伞","进阶巴蛇","巴蛇","进阶龙龟",
    --                      "龙龟","进阶大力金刚","大力金刚","进阶鬼将","鬼将","进阶红萼仙子","红萼仙子","葫芦宝贝","进阶葫芦宝贝","画魂","进阶画魂","机关鸟",
    --                      "进阶机关鸟","机关人","进阶机关人","机关兽","进阶机关兽","金饶僧" ,"进阶金饶僧","进阶净瓶女娲","净瓶女娲","连弩车","进阶连弩车","进阶灵鹤",
    --                      "灵鹤","进阶灵符女娲","灵符女娲","进阶律法女娲","律法女娲","琴仙","进阶琴仙","进阶踏云兽" ,"踏云兽","进阶雾中仙","雾中仙","进阶吸血鬼",
    --                      "吸血鬼","进阶噬天虎" ,"噬天虎","进阶炎魔神","炎魔神","进阶幽灵","幽灵" ,"进阶幽萤娃娃","幽萤娃娃","夜罗刹" ,"进阶夜罗刹","超级泡泡",
    --                      "超级大熊猫","进阶毗舍童子","毗舍童子","长眉灵猴","进阶长眉灵猴","进阶持国巡守","持国巡守","进阶混沌兽","混沌兽","金身罗汉","进阶金身罗汉",
    --                      "巨力神猿","进阶巨力神猿","狂豹人形","进阶狂豹人形","狂豹兽形","进阶狂豹兽形","曼珠沙华","进阶曼珠沙华" ,"猫灵人形","进阶猫灵人形","猫灵兽形","进阶猫灵兽形",
    --                      "藤蔓妖花","进阶藤蔓妖花","进阶蝎子精","蝎子精","修罗傀儡鬼","进阶修罗傀儡鬼","修罗傀儡妖","进阶修罗傀儡妖","增长巡守","进阶增长巡守",
    --                      "进阶真陀护法","真陀护法","蜃气妖","进阶蜃气妖","灵灯侍者","进阶灵灯侍者","般若天女","进阶般若天女"
    --                     }
    --             道具处理类:给予道具(三界书院.名单[1].id,"怪物卡片",nil,卡片[math.random(#卡片)])
    --             发送数据(玩家数据[三界书院.名单[1].id].连接id, 7, "#y/你获得了一张怪物卡片")
    --         end
    --     end
    -- end
    for n, v in pairs(玩家数据) do
      if 玩家数据[n]~=nil  then
          if 玩家数据[n].角色.自动抓鬼~=nil then
               if 玩家数据[n].角色.自动抓鬼.开启 and 玩家数据[n].战斗==0  then
                 if 玩家数据[n].角色.自动抓鬼.次数 > 0  then
                     玩家数据[n].角色.自动抓鬼.总计=玩家数据[n].角色.自动抓鬼.总计+1
                     if 玩家数据[n].角色.自动抓鬼.总计>=3  then
                        if 玩家数据[n].战斗~=0  then
                           玩家数据[n].角色.自动抓鬼.开启=false
                           发送数据(玩家数据[n].连接id, 7, "#y/战斗中,停止自动抓鬼。")
                        else
                             任务控制类:完成自动抓鬼任务(n)
                        end
                        玩家数据[n].角色.自动抓鬼.总计=0
                     end
                  else
                     玩家数据[n].角色.自动抓鬼.开启=false
                     角色处理类:刷新自动抓鬼数据(玩家数据[n])
                  end
              end
          end
      end
   end
    RunTimeFunc()
    if 服务器关闭.开关 then
        服务器关闭.计时 = 服务器关闭.计时 - 1
        __S服务:输出("服务器关闭倒计时：" .. 服务器关闭.计时)
        if 服务器关闭.计时 <= 60 and 服务器关闭.计时 > 0 then
            广播消息("#xt/#y/服务器将在#r/" .. 服务器关闭.计时 .. "#y/秒后关闭,请所有玩家立即下线。")
        elseif 服务器关闭.计时 <= 0 then
            玩家全部下线()
        end
    end
    --print("渲染","-当前内存",math.floor(collectgarbage("count")/1024).."MB")
     --collectgarbage("collect")
end
function 常规提示(id,内容)
  if 玩家数据[id] ~= nil then
    发送数据(玩家数据[id].连接id, 7, 内容)
  else
    print("是玩家数据[id]导致的错误")
  end
end
function RunTimeFunc()
    增加在线时间()
    if os.time() - 保存参数.起始 >= 保存参数.间隔 * 60 then
        保存参数.起始 = os.time()
        Save()
    end
    if 无间炼狱数据.间隔 <= os.time() - 无间炼狱数据.起始 then
        无间炼狱数据.起始 = os.time()
        地图处理类:无间炼狱奖励()
    end
end

function 输入函数(t)
end

function 退出函数()
    Save()
end
function 排序(tbl)
  local n = #tbl
  for i = 1, n do
   local j =math.random(i,n)
   if j>i then
            tbl[i], tbl[j] = tbl[j], tbl[i]
    end
    end
end
装备强化 = true
敏感词数据 = table.loadstring( ReadFile("数据信息/敏感词数据.txt"))
任务控制类:加载首席单位()
serPort=f函数.读配置(ServerDirectory .. "config.ini", "mainconfig", "serPort")+0
local zlsj = f函数.读配置(ServerDirectory .. "config.ini", "mainconfig", "zlsj")
if zlsj == "空" then
f函数.写配置(ServerDirectory.. "config.ini", "mainconfig", "zlsj",os.time())
f函数.写配置(ServerDirectory.. "config.ini", "mainconfig", "zlcs",1)
end
if f函数.读配置(ServerDirectory .. "config.ini", "mainconfig", "zlsj") + 1209600 <= os.time() then
local qs = f函数.读配置(ServerDirectory .. "config.ini", "mainconfig", "zlcs") + 1
f函数.写配置(ServerDirectory.. "config.ini", "mainconfig", "zlcs",qs)
f函数.写配置(ServerDirectory.. "config.ini", "mainconfig", "zlsj",os.time())
end
系统战令重置时间 = math.floor((1209600 - (os.time() - (f函数.读配置(ServerDirectory .. "config.ini", "mainconfig", "zlsj") + 0)))/86400)
系统战令期数 = f函数.读配置(ServerDirectory .. "config.ini", "mainconfig", "zlcs") + 0
__S服务:启动( Config.ip ,serPort)
__S服务:置标题("服务端-端口："..serPort)
__gge.print(true,7,string.format("网关连接\t\t\t-->"))
__gge.print(false,7,"\t\t\t[")
__gge.print(false,13,"未连接")
__gge.print(false,7,"]\n")
__gge.print(false,7,"-------------------------------------------------------------------------\n")
__gge.print(false,7,"本版本仅限单机使用切勿用于商业\n")
__gge.print(false,7,"一切违法犯罪行为获利方自行承担责任\n")
__gge.print(false,7,"       更多游戏资源请访问：www.2021gm.com\n")
__gge.print(false,7,"                       或者：www.500s.cn\n")
function 藏宝阁更新()
  local 改变 = false
  for i,v in pairs(藏宝阁数据) do
    for n=1,#藏宝阁数据[i] do
      if 藏宝阁数据[i][n] ~= nil and os.time() > 藏宝阁数据[i][n].结束时间 then
        local id = 藏宝阁数据[i][n].所有者
        if i ~= "银两" and i ~= "召唤兽" and i ~= "角色" then
          if 寄存数据[id] == nil then
            寄存数据[id] = {[1]={类型="物品",物品=藏宝阁数据[i][n].物品}}
          else
            寄存数据[id][#寄存数据[id]+1] = {类型="物品",物品=藏宝阁数据[i][n].物品}
          end
        elseif i == "银两" then
          if 寄存数据[id] == nil then
            寄存数据[id] = {[1]={类型="银子",数额=藏宝阁数据[i][n].数额}}
          else
            寄存数据[id][#寄存数据[id]+1] = {类型="银子",数额=藏宝阁数据[i][n].数额}
          end
        elseif i == "召唤兽" then
          if 寄存数据[id] == nil then
            寄存数据[id] = {[1]={类型="召唤兽",召唤兽=藏宝阁数据[i][n].召唤兽}}
          else
            寄存数据[id][#寄存数据[id]+1] = {类型="召唤兽",召唤兽=藏宝阁数据[i][n].召唤兽}
          end
        elseif i == "角色" then
          -- local 角色信息 = table.loadstring(读入文件([[data/]]..藏宝阁数据.角色[n].角色信息.账号..[[/]]..藏宝阁数据.角色[n].所有者..[[/角色.txt]]))
          -- 角色信息.藏宝阁出售 = nil
          -- 写出文件([[data/]]..藏宝阁数据.角色[n].角色信息.账号..[[/]]..藏宝阁数据.角色[n].所有者..[[/角色.txt]],table.tostring(角色信息))
          -- 角色信息 = nil
        end
        table.remove(藏宝阁数据[i],n)
        改变 = true
      end
    end
  end
  if 改变 then
    for i,v in pairs(观察藏宝阁数据) do
      if 玩家数据[i] ~= nil then
        发送数据(玩家数据[i].连接id,200756 , 藏宝阁数据)
      else
          玩家数据[i] = nil
      end
    end
  end
end
